package com.study;

import com.study.bean.MyMsg;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.util.concurrent.TimeUnit;

/**
 * 引入amqp场景
 * 1 引入场景启动amqp RabbitAutoConfiguration就会自动生效
 * 2 给容器中自动配置了
 * <p>
 * 3 配置spring.rabbitmq信息
 * EnableRabbit
 * <p>
 * 监听消息RabbitListener（需要开启EnableRabbit） 标注类和方法
 * RabbitHandler 使用在方法上
 *
 * @author MI
 */
@Slf4j
@EnableRabbit
@SpringBootApplication
public class JsmApplication {

    public static void main(String[] args) {
        SpringApplication.run(JsmApplication.class, args);
    }

    /**
     * queues接受到的消息
     * 可以监听多个消息。只要收到消息，队列删除消息，而且只能有一个收到此消息
     * 服务启动多个，同一个消息，只能被一个客户端收到
     * <p>
     * 参数可以写以下类型
     * 1 Message：原生消息，头+体
     * 2 T 发送的消息类型
     * 3 Channel 当前传输的数据通道
     */
    // @RabbitListener(queues = {"hello-java-queue"})
    public void receiveMsg(/*Object msg, Message message,*/
            MyMsg mymsg/*, Channel channel*/) {
        System.out.print("接收到的消息 =>");
        System.out.println(mymsg);

       /* //消息体
        byte[] body = message.getBody();
        //消息头
        MessageProperties messageProperties = message.getMessageProperties();
        System.out.println("消息头 " + messageProperties);
        System.out.println("消息体 " + new String(body));*/
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }


}
